package com.malou.server.ventas.modeloprenda;

import java.util.List;

import javax.servlet.http.HttpSession;

import com.extjs.gxt.ui.client.data.BasePagingLoadConfig;
import com.extjs.gxt.ui.client.data.FilterPagingLoadConfig;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.google.gwt.user.server.rpc.RemoteServiceServlet;
import com.malou.client.seguridad.usuario.Usuario;
import com.malou.client.util.MensajeData;
import com.malou.client.ventas.colores.Color;
import com.malou.client.ventas.modeloprenda.ModeloPrenda;
import com.malou.client.ventas.modeloprenda.ModeloPrendaService;
import com.malou.client.ventas.tallas.Talla;
import com.malou.client.ventas.telas.Tela;
import com.malou.client.ventas.tipoprendas.TipoPrenda;
import com.malou.server.base.util.GxtComboBoxPaginate;
import com.malou.server.base.util.GxtGridPaginate;
import com.malou.server.seguridad.usuario.Usuarios;
import com.malou.server.ventas.serie.Series;

public class ModeloPrendaServiceImpl extends RemoteServiceServlet implements ModeloPrendaService {

	private static final long serialVersionUID = 1L;	
	
	@Override
	public PagingLoadResult<ModeloPrenda> paginateModeloPrenda(
			FilterPagingLoadConfig config) {
		GxtGridPaginate paginate = new GxtGridPaginate();
		paginate.config = config;
		
		Usuario user = getUsuarioSession();
		
		//comet(user.getUsuario());		
		
		paginate.tienda_id = user.getIdtienda();
		if(user.getIdprivilegio() == 1)
			ModeloPrendas.isSuperUsuario = true;
		else
			ModeloPrendas.isSuperUsuario = false;
		
		return ModeloPrendas.getPaginate(paginate);
	}

	@Override
	public MensajeData save(ModeloPrenda mp) {
		MensajeData data = new MensajeData();
		data.guardado = true;
		
		if(!ModeloPrendas.save(mp)){
			data.guardado = false;
			data.errorTipo = ModeloPrendas.errorTipo;
			data.parametro = ModeloPrendas.parametro;
		}
		
		return data;
	}

	@Override
	public MensajeData delete(Integer id) {
		MensajeData data = new MensajeData();
		data.guardado = true;
		
		if(!ModeloPrendas.delete(id)){
			data.guardado = false;
		}
		
		return data;
	}

	@Override
	public MensajeData deleteAll(String ids) {
		
		MensajeData data = new MensajeData();
		data.guardado = true;
		
		if(!ModeloPrendas.deleteAll(ids)){
			data.guardado = false;
		}
		
		return data;
	}

	@Override
	public List<TipoPrenda> getTipoPrenda() {
		return ModeloPrendas.getTipoPrenda();
	}
	
	private Usuario getUsuarioSession() {
		HttpSession session = getThreadLocalRequest().getSession(false);
		
		if (session.getAttribute("username") != null){
			String username = (String) session.getAttribute("username");
			
	        return Usuarios.getResponsable(username);  
	    }else{
	    	return null;
	    }
	}	

	@Override
	public List<ModeloPrenda> listModeloPrenda(
			Integer tipo_id, Integer tela_id, Integer talla_id,Integer color_id) {		
		
		Usuario user = getUsuarioSession();		
		Integer tienda_id = user.getIdtienda();
		
		
		return ModeloPrendas.getList(tipo_id, tela_id, talla_id, color_id,tienda_id);
	}

	@Override
	public ModeloPrenda getPrenda(String codigo) {
		ModeloPrenda mp = new ModeloPrenda();
		Series.ultimonumero = codigo;
		mp.setCodigo(Series.getNumeracion("codigoarticulo"));
		Series.ultimonumero = null;
		
		Usuario user = getUsuarioSession();		
		mp.setTienda_id(user.getIdtienda());
		return ModeloPrendas.getPrenda(mp);
	}

	@Override
	public List<Tela> getTela() {
		return ModeloPrendas.getTela();		
	}

	@Override
	public List<Talla> getTalla() {
		return ModeloPrendas.getTalla();
	}

	@Override
	public List<Color> getColor() {
		return ModeloPrendas.getColor();
	}

	@Override
	public PagingLoadResult<ModeloPrenda> paginateModeloPrenda(
			BasePagingLoadConfig config) {

        GxtComboBoxPaginate paginate = new GxtComboBoxPaginate();
        paginate.config = config;
        
        Usuario user = getUsuarioSession();             
        paginate.tienda_id = user.getIdtienda();
        
        
        return ModeloPrendas.getPaginate(paginate);		
	}
	
	/*private void comet(String username){
		HttpSession session = getThreadLocalRequest().getSession(false);
		CometSession cometSession = CometServlet.getCometSession(session);		
		ModeloPrendas.users.putIfAbsent(username, cometSession);		
	}

	@Override
	public void noComet() {
		HttpSession httpSession = getThreadLocalRequest().getSession(false);		
		CometSession cometSession = CometServlet.getCometSession(httpSession, false);
		Usuario user = getUsuarioSession();
		ModeloPrendas.users.remove(user.getUsuario(), cometSession);
	}*/

}
